Software is ubiquitous and touches almost everyone either directly or otherwise. Thus, software has the potential for wide reaching impact. A chief determinant of the nature of the impact of any software product hinges on the quality of the software produced. Accordingly, software testing, just like software development, is a valuable function of the process for producing quality software products. Software testing directly contributes to improving the quality of software by detecting defects and enabling such defects to be addressed before the product ships.
Software defects that are not detected, and consequently left un-addressed, result in user's experiencing some type of failure during operation of the software. These failures can have significant cost implications for the producer of the software, including the costs to address failure issues reported from customers and to issue patches, the loss of customer confidence and credibility, the loss or corruption of customer data, legal implications due to failure or non-compliance, etc. The consequences of releasing poorly tested software may be avoided by preventing and eliminating defects during software production. Preventing software defects from shipping involves a much smaller investment upfront compared to the cost incurred later in addressing those defects. Software testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation.
Software testing normally occurs in several phases, for example, engineering test, development test, alpha testing, and beta testing. Numerous tools have been developed to facilitate software testing. These testing tools generally automate functional testing to ensure that applications work as expected. Moreover, software test tools can handle administration, reporting and sequencing of tests, and provide a common user interface for a test administrator to develop tests.
Many companies are moving to a centralized testing environment. A centralized testing environment provides process consistency through the consistent deployment of standard testing methodology and processes, which helps improve the quality and efficiency of testing. In addition, centralized testing environment provides benefits from economies of scale and centralized spending
However, a centralized testing environment is becoming increasingly more difficult to maintain due to the numerous builds that are integrated into that one environment. As online services grow and dependencies become increasingly more tangled, having an easily targeted and deployed environment that developers can use to validate their fixes becomes critical. Being able to maintain multiple releases of a software product requires a rich testing environment to ensure a software patch or hot fix, i.e., quick fix engineering (QFE), and rollups are validated properly using test passes.
Currently, a tester may take about a week to deploy a multi-machine environment for testing software for developers. In addition, each of these kinds of components is accessed individually. Others have solved these problems using automated tasks to replicate the environment in real time after a user selects the choice, manually building configurations one at a time and stringing them together, and using different tools for each of the different tasks such as machine retrieval, followed by setup tools etc.
It can be seen then that there is a need for a method, a system, and a computer readable storage device for deploying environments for testing by providing instantaneous availability of prebuilt environments.